<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
    // 1push 2pop 3 unshift 4 shift 5 reverse 6 sort  7splice
        // 原数组的值都会发生改变     
       //8-12就是 原数组不变 结果放到一个新的数组中 
       // 返回的是一个新的数组
    8. concat()
        + 语法: 原始数组.concat(数1, 数2, 数据, ...)
        + 作用: 进行数组拼接, 把参数的所有数组或者数据, 拼接在原始数组身上
        + 返回值: 拼接好的数组
        + 和 push 的区别
          => 改变原始数组
            -> push 直接改变原始数组
            -> concat 不会改变原始数组
          => 插入数据
            -> push 直接把数据插入
            -> concat 如果遇到数组, 会把数组拆开, 把每一个数据依次插入

      9. join()  数组=>字符串
        + 语法: 数组.join('连接符')
        + 作用: 使用连接符, 把数组内的每一个数据连接成一个字符串(不写默认使用 逗号)
        + 返回值: 连接好的字符串
         
      10. slice()
        + 语法: 数组.slice(开始索引, 结束索引)  [开始的索引,结束的索引)
        + 参数特点:
          => 包前不包后, 包含开始索引位置数据, 不包含结束索引位置数据
          => 开始所以不填, 默认是 0, 结束索引不填, 默认是 length
          => 可以填写负整数, 表示倒数第几个, 其实就是 length + 负整数
        + 作用: 截取数据的部分内容
        + 返回值: 必然是一个新数组
          => 内部就是截取出来的部分内容
        + 和 splcie 的区别
          => 改变原始数组
            -> splice 改变原始数组
            -> slice 不改变原始数组
          => 参数
            -> splice(开始索引, 多少个)
            -> slice(开始索引, 结束索引)

      11. indexOf()
        + 语法:
          => 数组.indexOf(数据)
          => 数组.indexOf(数据, 开始索引)
        + 作用: 从前到后检索该数据第一次在该数组内出现的位置
        + 返回值:
          => 如果在数组内找到了该数据, 那么就是该数据第一次出现的索引位置
          => 如果在数据内没有找到该数据, 那么就是 -1

      12. lastIndexOf()
        + 语法:
          => 数组.lastIndexOf(数据)
          => 数组.lastIndexOf(数据, 开始索引)
        + 作用: 从后向前检索该数据第一次在该数组内出现的位置
        + 返回值:
          => 如果在数组内找到了该数据, 那么就是该数据第一次出现的索引位置
          => 如果在数据内没有找到该数据, 那么就是 -1

          [12,10,15]     15
    */


    // concat()

    // var arr1 =  ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']

    // var res = arr1.concat([500,'周瑜'],'诸葛亮',['铁拐李','黄忠'])
    // document.write('原始数组',arr1,'<br>')
    // document.write('拼接好的数组',res,'<br>')
    // document.write('原始数组',arr1)


    // join()
    // var arr1 =  ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']
    // var res = arr1.join('$')
    // document.write('原始数组',arr1,'<br>')
    // document.write('拼接好的字符串',res,typeof(res),'<br>')
    // document.write('原始数组',arr1)
    
   // slice()   //索引支持负数  返回的是一个新数组
    //            0       1         2     3      4      5      6
    //             -7     -6        -5    -4    -3    -2       -1
    // var arr1 =  ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天']
    // var res = arr1.slice(2,3);
    // var res = arr1.slice(-6,-4); //截取的时候一定是从左往右截取 -6,-4
    // var res = arr1.slice(-1); // 截取数组的最后一个元素
    // var res = arr1.slice(-1,0); //默认是从左往右 -1 到0 是从右往左所以结果是空 

    // var res = arr1.slice(0,arr1.length);
    // var res1 = arr1.slice(0);// 有头无尾 不写尾代表你全要

    // document.write('原始数组',arr1,'<br>')
    // document.write('截取的内容',res,typeof(res),'<br>')
    // document.write('截取的内容',res1,typeof(res),'<br>')

    // document.write('原始数组',arr1)

    // 复制一个新的数组
    // push 到一个新空数组中
    // slice() 


    
    // // indexOf() 
    // var arr1 =  ['李白','安琪拉','猪八戒','李白','杜甫','韩信','李信','小乔','武则天']
    // 元素的下标永不变 不管从哪里找 找到他 就是他不变的下标
    // var res = arr1.indexOf('杜甫',5) // 从左往右找 第一次出现的位置  1 如果找不到 返回-1
    // // 如果指定了第二个参数 表示从下标五开始往右查找 找不到 -1 
    // var res1 = arr1.lastIndexOf('杜甫',5) // 从右往左找 第一次出现的位置 3 如果找不到 返回-1
    // // 如果指定了第二个参数 表示从下标五开始往左查找 返回 找到返回元素所在数组的下标 找不到 -1     
    // alert(res) 
    // alert(res1)

    var balls = [3,19,34,22,6]
    var num1 = 7
    if(balls.indexOf(num1)== -1){
        balls.push(num1)
    }

    alert(balls)







    </script>
</body>

</html>